// 右键tab
function onTabContextMenu(e, title,index){
    e.preventDefault();
    $("#tab-menu").menu("show", {
        left : e.pageX,
        top : e.pageY
    }).data("tabTitle", title);
}
// tab右键菜单点击事件处理
function onMenuClick(node){
    actionTab(node.id)
}
// 菜单树点击事件处理
function onTreeClick(node){
    // 判断是不是叶子节点
    var childNodes = $("#menu").tree("getChildren",node.target);
    // 不是叶子节点处理
    if(childNodes != null && childNodes.length != 0){
        $("#menu").tree("toggle",node.target);
    }else {
        showTab(node.url, node.text, node.iconCls)
    }
}

// 创建标签
function showTab(url, title, icon) {
    if(url == null || url.trim().length == 0){
        alert("url地址无效")
        return;
    }
    var tab = $('#tabs');
    if (tab.tabs("exists", title)) {
        tab.tabs("select", title);
    } else {
        var iframeContent =createFrame(url);
        if(iframeContent == ""){
            return;
        }
        tab.tabs("add", {
            title : title,
            content : iframeContent,
            iconCls : icon,
            closable : true
        });
    }
}

// 创建iframe
function createFrame(url) {
    if(url == null ||  url.trim().length == 0){
        return "";
    }
    var s = '<iframe name="sysMain" onload="onIframeLoaded()" frameborder="0"  src="' + url + '"  style="width:100%;height:100%;"></iframe>';
    return s;
}
// iframe加载完成
function onIframeLoaded() {
    // alert("加载完成");
}

// tab动作的操作
var onlyOpenTitle = "首页"; // 设置首页tab不可关闭
function actionTab(action) {
    var alltabs = $('#tabs').tabs('tabs');
    var currentTab = $('#tabs').tabs('getSelected');
    var allTabtitle = [];
    $.each(alltabs, function (i, n) {
        allTabtitle.push($(n).panel('options').title);
    });
    switch (action) {
        case 'refresh':
            var iframe = $(currentTab.panel('options').content);
            var src = iframe.attr('src');
            if (currentTab.panel('options').title == onlyOpenTitle)// 如果是我的首页
            {
                src = '/home/index';
            }
            $('#tabs').tabs('update', {
                tab: currentTab,
                options: {
                    content: createFrame(src)
                }
            })
            break;
        case 'close-cur':
            var currtab_title = currentTab.panel('options').title;
            if (currtab_title != onlyOpenTitle) {// 首页无法关闭
                $('#tabs').tabs('close', currtab_title);
            }
            break;
        case 'close-all':
            $.each(allTabtitle, function (i, n) {
                if (n != onlyOpenTitle) {
                    $('#tabs').tabs('close', n);
                }
            });
            break;
        case 'close-other':
            var currtab_title = currentTab.panel('options').title;
            $.each(allTabtitle, function (i, n) {
                if (n != currtab_title && n != onlyOpenTitle) {
                    $('#tabs').tabs('close', n);
                }
            });
            break;
        case 'close-right':
            var tabIndex = $('#tabs').tabs('getTabIndex', currentTab);
            if (tabIndex == alltabs.length - 1) {
                $.messager.alert('提示', '右边没有可关闭的tab项', 'info');
                return false;
            }
            $.each(allTabtitle, function (i, n) {
                if (i > tabIndex) {
                    if (n != onlyOpenTitle) {
                        $('#tabs').tabs('close', n);
                    }
                }
            });
            break;
        case 'close-left':
            var tabIndex = $('#tabs').tabs('getTabIndex', currentTab);
            if (tabIndex == 1) {
                $.messager.alert('提示', '左边边没有可关闭的tab项', 'info');
                return false;
            }
            $.each(allTabtitle, function (i, n) {
                if (i < tabIndex) {
                    if (n != onlyOpenTitle) {
                        $('#tabs').tabs('close', n);
                    }
                }
            });
            break;
        case 'exit':
            $('#tab-menu').menu('hide');
            break;
    }
}
